基础通信
ROS2的基础通信
| 通信模式 | 作用 | 特点 | 应用场景 |
|---|---|---|---|
| 话题:发布-订阅 (Publish-Subscribe) | 单向、异步数据流 | 高效、解耦,适用于传感器数据流、状态更新 | 传感器数据流(如相机图像、激光雷达数据)、机器人状态更新(如位置、速度) |
| 服务:服务端-客户端 (Service-Client) | 同步、请求-响应 | 阻塞式通信,用于需要明确结果的任务 | 触发特定动作(如抓取物体)、查询物体 ID |
| 动作 (Actions) | 长时任务处理 | 异步、支持进度反馈和取消 | 移动机器人到指定位置、机械臂执行复杂任务 |
| 参数 (Parameters) | 动态配置节点行为 | 非实时通信,用于启动时或运行时的配置调整 | 调整 PID 控制器增益、修改传感器发布频率 |
话题
- 运行话题的发布者节点 :
ros2 run learning_topic topic_helloworld_pub - 运行话题的订阅者节点 :
ros2 run learning_topic topic_helloworld_sub
可以看到发布者循环发布“Hello World”字符串消息,订阅者也以几乎同样的频率收到该话题的消息数据。
服务
- 运行服务的服务端节点 :
ros2 run learning_service service_adder_server - 运行服务的客户端节点 :
ros2 run learning_service service_adder_client 2 3
动作
- 运行动作的服务端节点 :
ros2 run learning_action action_move_server - 运行动作的客户端节点 :
ros2 run learning_action action_move_client
参数
等价于机器学习中的超参数即:在开始训练前设置的参数,例如:学习率、隐藏层大小、迭代次数等等。
- 运行节点 :
ros2 run learning_parameter param_declare - 在另外终端设置参数 :
ros2 param set param_declare robot_name turtle